package cn.agiledata.bank.transaction.form;

import org.apache.struts.action.ActionForm;

/**
 * 多步骤Form
 * 
 * @author maxianbo
 * 
 */
public class MultiStepForm extends ActionForm {

    private int step;

    /**
     * 
     * @return 步骤序号
     */
    public final int getStep() {
        return this.step;
    }

    /**
     * 
     * @param step
     *            步骤序号
     */
    public final void setStep(int step) {
        this.step = step;
    }

    /**
     * 判断Form是否可以被重置。在充值的多个步骤之间不能被重置。
     * 
     * @return true if Form可以重置, otherwise false
     */
    protected final boolean isResetable() {
        return this.step == 0;
    }

    /**
     * 设置上一步的步骤序数。在流程返回到上一步时使用
     */
    public final void setPreviousStep() {
        if (this.step > 0) {
            this.step--;
        }
    }

    /**
     * 设置下一步的步骤序数。若当前步骤序数为低于指定最大步骤序数的非负数，则递增步骤序数，否则重置步骤序数为0
     */
    public final void setNextStep(int maxStep) {
        if (0 <= this.step && this.step < maxStep) {
            this.step++;
        } else {
            this.step = 0;
        }
    }

}
